// const myObject = {}
// const myDynamicProperty = {
//   myDynamicProperty: 'Hello, world!'
// }
// Object.assign(myObject, myDynamicProperty)

// console.log(myObject)
/* 在上面的代码中，我们首先声明了一个空对象 myObject，然后声明了一个包含动态属性的对象 myDynamicProperty，
最后使用 Object.assign 方法将两个对象合并。这样，我们就能够为对象动态添加属性。
需要注意的是，使用 Object.assign 添加属性也存在一些潜在的问题。首先，由于 TypeScript 是静态类型语言，因此我们无法在类型定义中指定新属性的类型。其次，由于 Object.assign 是一种浅拷贝方法，它只会复制对象的属性，而不会复制属性值所属的对象。
这意味着如果你在新属性值中包含对象，则该对象的引用仍然指向原始对象，这可能会导致副作用和意外行为。

*/

// interface Dog {
//   age: number
//   name: string
//   color?: string //可选实现 但是实现就必须是string类型的
// }

import { Dog } from './type'
const dp: Dog = {
  age: 1,
  name: '小黑',
  color: 'black' //可写可不写，写了就必须是string类型 否则编译报错
}
console.log(dp)
